git的自动化以及快捷设置

git,自动push,一键上传

Updated on February 23, 2021 Posted by elmagnifico on November 3, 2015

Git Bash 修改默认打开文件夹位置

Win10下

如何让Git Bash打开的时候直接进入项目目录,而不是每次都要去cd…

  • 方法一

git的安装目录下搜索 bashrc

然后编辑文本,最后一行加上

#后面接你自己的项目目录就行了
cd e:\Github\elmagnificogi.github.io\

但是这样有个一个问题,不管从哪里打开git bash,或者是右键从here 打开git bash 都会转到自己的项目目录去,很不方便,所以不推荐这个方法。

  • 方法二

直接对着Git Bash 快捷方式右键-属性

起始位置:填入你要到的目录

比如:

e:\Github\elmagnificogi.github.io\

这样的 然后应用-确定 再打开就发现直接到了自己想去的目录,也不会影响 git bash here命令了。

  • 后话

刚开始不知道方法二,看到了右键-快捷方式-目标

D:\Git\git-bash.exe --cd-to-home

以为修改后面的home就能实现更改默认目录呢 死活改不对(闪退),直到发现方法二,才发现白费功夫啊。

Git Push 不用每次输入账号和密码

Win10下

每次都要输入用户名密码,我的f键还有点问题,经常输入的时候f键按了,但是没输入进去,导致一遍遍重输入账号密码,都快吐血了(后来直接在记事本里写好账号密码,然后输入的时候直接复制粘贴)

那如何解决这个问题呢?

  • 方法一

在windows中添加一个HOME环境变量(注意不是系统变量哦)

变量名:HOME

变量值:%USERPROFILE%

然后进入 %HOME% 目录(直接复制到地址栏就能进去了)

新建一个名为”_netrc”的文件,文件中内容格式如下: (一定要注意这个文件没有后缀名!显示一下后缀名确保正确!)

machine github.com
login 你的账户
password 你的密码

重开git bash 再次push 你会发现不要账号和密码了

如果方法一没用的话再尝试方法二

  • 方法二

打开git bash 在%HOME% 的目录下 创建.git-credentials文件

先去看看自己的 %HOME% 是在哪里 然后再用下面的命令不然就无效

touch .git-credentials

vim .git-credentials

文本内容为:

https://你的账户:你的密码@github.com

完成之后继续:

git config --global credential.helper store

重开git bash 再次push 你会发现不要账号和密码了

github库一键更新上传

每次都得输入

git add .
git commit -m "update-post"
git push origin master

好麻烦,得弄个什么一键完成比较快,刚好也不用输入账号密码,省事

找了找,应该写一个update.sh来完成就可以了 于是如下:

git add .;
git commit -m "update-post";
git push origin master

以后只需要调用

./update.sh

就可以完成所有操作啦。

add

git add .

把添加文件改动添加到缓存区中,就是为了添加新文件而生的

commit

git commit  -am "提交信息记录"

把改动提交到缓冲区中,其中-m是为了有提交记录,-a是了只提交被删除或者修改了的文件。

而新添加的文件是不会被加入到HEAD区中的,新添加的需要用add来完成。

clone

git clone <版本库地址>
git clone <版本库的网址> <本地目录名>

我自己用的:

git clone https://github.com/elmagnificogi/elmagnificogi.github.io

直接克隆一个当前最新的版本的blog下来。

一般经常会遇到提示克隆的目录不为空,这种情况都是直接删除整个目录重新克隆一下就好了

如果感觉速度太慢了,那就挂代理克隆

pull

git pull

直接从远程更新,并且合并到本地库中。如果想要对比一下,然后合并则不能用这个。

而且不安全,除非你自己保证本地的是比远程的老,并且没有任何新内容才能用

Git fetch origin master
git log -p master..origin/master
git merge origin/master

而用fetch就是只从远程取到本地,但是并不进行融合,也就是说不会覆盖本地的内容。

然后进行对比之后,再融合。

checkout

git checkout new_branch

从当前分支切换到new_branch分支中去。

git checkout -- test.txt

虽然不加–也可以完成这个操作,用来从最新的commit中恢复test.txt文件,但是为了避免歧义

有可能他会识别文件明和分支名相同的情况,从而去切换分支了

merge

git merge old_branch

这里是将old_branch分支合并到当前目录的分支中,有可能会出现冲突

git diff <source_branch> <target_branch>

查看分支的不同之处,进而合并分支,有必要时需要使用 add来添加文件

status

git status

查看当前分支的状态,会显示增删改的文件

log

git log

可以查看你之前commit的记录

reflog

git reflog

可以查看所有的提交删除相关的改变 Head 的记录,用于平时回到最新版时查找最新的commit号

reset

git reset --hard commit号

强制退回到某个版本,删除该版本之后所有的commit

revert

git revert commit号

回滚到某个版本,会提交一个回滚commit

stash

git stash save "work in progress for foo feature"

保存当前的所有修改,存在 stash 中,并退回最近的一个版本

git stash list

显示当前 stash 中保存的所有版本

git stash apply [email protected]{1}

把 stash 中编号为1的版本恢复出来

submodule

有时候clone的工程里有submodule,这个时候submodule的工程都不会自动关联下载的。

要我们指定下载,如下即可自动递归寻找需要下载的子模块

git submodule update --init --recursive

branch

git checkout -b newpro

新建一个叫newpro的分支 并且切换过去

git branch

可以查看本地有什么分支,当前分支会带*号

git branch newpro

新建一个叫newpro的分支,但是不会切换过去

图形化界面

gitk

图形化上面的各种命令和对比,更加直观。

git中文乱码

git config --global gui.encoding utf-8

修改编码模式即可

Quote

http://blog.csdn.net/on_1y/article/details/19259435

http://www.cnblogs.com/lixiaolun/p/4360732.html

http://blog.163.com/023_dns/blog/static/1187273662013111301046930/

http://www.cnblogs.com/ballwql/p/3462104.html

http://blog.csdn.net/wh_19910525/article/details/7784901