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 stash@{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