Android

git随手记

2017-11-01  本文已影响6人  小乌龟爸

### 1. git安装

*tortoisegit

···

int i = 0

i++

···

### 2. git配置

*用户信息\

`git config --global user.name "fanzhang"`\

`git config --global user.email "fanzhang@yunnex.com"`

*文本编辑器\

`git config --global core.editor notepad`

*查看配置信息\

`git config --list`

*配置git注释模板\

`git config –global commit.template ./commit_template`

*Git SSH配置\

`ssh-keygen -t rsa -C "fanzhang@yunnex.com"`

### 3. git使用流程

![](./image/git1.png)

### 4. 本地代码与服务器代码的关系

![](./image/git2.png)

### 5. git提交代码流程

![](./image/git3.png)

### 6. git常用命令

1.取代码

*第一次取代码\

`git clone git@github.com:fanzhangvip/GitProject.git`

*再次取\

`git pull <分支>`\

冲突`git checkout  <冲突文件>`

2.git代码提交命令\

`git add <修改文件>`\

`git commit /git commit –a(慎用)`\

`git push  [分支]可选`\

另:

```

git diff ,git diff --cached

git reset  HEAD <文件路径>,git commit –amend,

git reset --HARD

```

3.分支的相关命令

```

git branch –a  查看服务器分支

git branch        查看本地分支

git checkout <服务器分支>  -b  <本地分支>

//建立本地分支,并切换到对应的分支

git checkout <分支 >    本地已存在分支切换,主分支 master

git branch –D  <分支名>  删除本地分支

git push/pull origin <分支名>  推送和拉代码

git cherry –pick   将另一分支的提交合入到本分支

```

4.其他常用命令

```

git log 查看日志

git log --author=fanzhang 查询指定提交人的日志

git log --grep=“bugId”

git log <文件路径>

git log --graph

可组合使用,如

git log --author=fanzhang  app/src/main/

git show [hashcode]  [文件路径] 显示具体的修改

如:git show 016e78

git diff  [文件路径] 对比代码的不同点(本地修改与服务器)

git diff --cached 本地commit后,未push时查看

git blame –l –L 行号  文件名  //查询指定文件某行的提交记录

git log [--before=“2012-08-09”] [--after=“XXX”]

[--since=“XX”]

git merge 把一个分支或或某个commit的修改合并到现在的分支上

[--no-ff ] 禁用fast-farward

[--squash] 本地文件内容与不使用该选项的合并结果相同,

但是不保留待合并分支上的历史信息,也不提交、不移动HEAD,因此需要一条额外的commit命令

git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list

git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除

git stash pop,恢复的同时把stash内容也删了

```

###7.冲突解决

1.拉代码冲突

```

git pull 时冲突,无法更新代码

git  checkout <冲突文件>

git checkout -f  强制

```

2.提交冲突

```

冲突原因:在同一文件中,其他人已提交了修改

较为规范提交步骤: git add, git commit , git pull ,git push

解决办法:先checkout 本地代码,再pull,再修改提交

git cherry-pick 冲突,手动修改

```

###8.*最牛逼的技能git status*

其他学习资料推荐:[廖雪峰的官方网站](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)

------

------

#Trunk-based development 和 git flow

[rdc最佳实践之开发模式——git flow](https://yq.aliyun.com/articles/137035)\

[深入理解学习Git工作流](https://segmentfault.com/a/1190000002918123)

#最后Markdown语法

*[Markdown 语法说明](http://www.appinn.com/markdown/)

*插件推荐:Markdown Navigator 2.0

#git使用常见问题

1.git无法pull仓库refusing to merge unrelated histories\

`git pull origin master --allow-unrelated-histories`

2.如果你在add时遇到unable to stat ... Filename too long 这个问题时\

`git config --system core.longpaths true`

3.git 乱码问题

```

在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。

解决方案:

在bash提示符下输入:

git config --global core.quotepath false

core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常

设置git gui的界面编码

git config --global gui.encoding utf-8

设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

git config --global i18n.commitencoding utf-8

git config --global i18n.logoutputencoding gbk

```

4.git合并产生备份文件\

`git config --global mergetool.keepBackup false`

5.git 配置比较 合并工具

```

# 差异工具配置

git config --global diff.external git-diff-wrapper.sh

git config --global diff.tool tortoise

git config --global difftool.tortoise.cmd 'TortoiseMerge -base:"$LOCAL" -theirs:"$REMOTE"'

git config --global difftool.prompt false

# 合并工具配置

git config --global merge.tool tortoise

git config --global mergetool.tortoise.cmd 'TortoiseMerge -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"'

git config --global mergetool.prompt false

# 别名设置

git config --global alias.dt difftool

git config --global alias.mt mergetool

```

6.

上一篇下一篇

猜你喜欢

热点阅读