git的使用

http://rogerdudler.github.io/git-guide/
https://www.atlassian.com/git/tutorials/


配置git ssh-keygen -t rsa -C "***@***.com(邮箱)" cd .ssh subl id_rsa.pub 之后在页面添加key 或者 ssh-keygen -t rsa -C "***@***.com(邮箱)" cat ~/.ssh/id_rsa # set user name git config --global user.name '***(name)' # set user email git config --global user.email '***@***.com(邮箱)' # set file mode git config --global core.filemode false # set content editor git config --global core.editor vim # set diff tool git config --global merge.tool vimdiff # set ui color git config --global color.ui auto cd .. cd Traning/ --- 自己建的文件夹
遇到
fatal: Out of memory? mmap failed: No such device
卸载git重装, 先移除.ssh文件和.gitconfig, sudo apt-get remove git
遇到Agent admitted failure to sign using the key
执行:  ssh-add 出现Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa) 即解决 git clone git@git.***.com.cn:projectName/***.git(项目路径,git项目里会提供) git clone -b develop git@git.***.com.cn:projectName/***.git ------------------------------------------------ git提交 ls cd 文件夹/ git status git stash git pull origin develop git stash pop gitg git commit -m "" git push origin deveop 只有自己一个分支时使用 git add -A git commit -m "comment..." git pull -r git push origin ***(name) ----------------------------------------- # create branch(git checkout -b branchName) git branch ***(name) git config --global user.name ***(name) ------------------------------------------ #将develop刚提交的代码插到master分支上 在develop分支上找到刚提交代commitId(b0f1878ee0f3d08669c2bb9094eaf6a534b2dd3d) 在develop分支上git stash,然后git status检查一下, git checkout master git branch查分支,确认在maste分支上 git pull -r再git pull -r确认一下 git cherry-pick b0f1878ee0f3d08669c2bb9094eaf6a534b2dd3d 将你在develop分支修改的插到master分支 gitg 查是否提交上(跟master其他代码在一线上) git push origin master git branch git checkout develop git status git stash pop git branch

----------------------------------------------------

git 多个 commits merge
方法一:
1. 提交你现在修改的 gitg添加, git commit
2. 然后git rebase -i HEAD~2,
出现类似vi的文字,进行修改, 然后把commit第一个改为 pick,第二个改为squash
接着wq!保存退出
(如果你要是合并三个的话,git rebase -i HEAD~3, 把commit第一个,改为 pick,第二三个改为squash)
3. 如果有冲突:然后git rebase --continue
4. 如果没有冲突,会在上一个文件保存退出后,显示一个类似vi的文字, 注释一个commit(保留一个commit),保存退出
5. 最后提交(push): git push -f origin 分支名
(用-f的原因: git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。=>强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容)
方法二:
1. 安装gitg插件
2. gitg, 将提交的文件移到右边, 第二次提交时选中Amend, git push origin -f 分支

-----------------------------------------------------------------------

各种提交问题
1. commit 但是没有push,想要返回到commit 之前: git reset HEAD^
2. git reset --soft 702219d7b0c1100dc86f8c207246b054571705ed
soft:修改的代码仍然存在
702219d7b0c1100dc86f8c207246b054571705ed:返回到的版本
3. merge分支的冲突:
git stash, git checout develop, git pull -r, git checkout branchA, git rebase develop,
解决冲突, git add, git rebase --continue, git push origin branchA
4. pull冲突:
解决冲突, git add, git stash, git pull -r, git stash pop
5. pop出指定的stash
git stash apply {{stashid}}
apply 只会读取暂存区的数据,通过apply后,暂存区的数据仍然存在;而pop是取出最新的一次暂存数据,取出后,这次数据就不会存在于暂存区中了

6. 还原为前一次的状态:git reset --hard origin/master 

 git clean

git clean 小结 + rm

删除 一些 没有 git add 的 文件;

git clean 参数

-n 显示 将要 删除的 文件 和  目录

-f 删除 文件,
-df 删除 文件 和 目录 git clean -n 文件 git clean -df 文件 git clean -f 文件
rm 文件

git merge提交

1. git merge whitespace, 如果有冲突,git merge --abort

2. 合并单条提交

  1. git checkout master  
  2. git cherry-pick 62ecb3  如果git不能合并代码改动(比如遇到合并冲突),git需要你自己来解决冲突并手动添加commit。

3. 合并某个分支上的一系列commits

在一些特性情况下,合并单个commit并不够,你需要合并一系列相连的commits。这种情况下就不要选择cherry-pick了,rebase 更适合。还以上例为例,假设你需要合并feature分支的commit76cada ~62ecb3 到master分支。

首先需要基于feature创建一个新的分支,并指明新分支的最后一个commit:

 
  1. git checkout -b newbranch 62ecb3  

然后,rebase这个新分支的commit到master(--ontomaster)。76cada^ 指明你想从哪个特定的commit开始。

  1. git rebase --onto master 76cada^  

得到的结果就是feature分支的commit 76cada ~62ecb3 都被合并到了master分支。

git 根据tag创建分支

在项目中我们需要根据tag创建分支.现将创建步骤总结一下.假设在你的主分支上有一个tag为v1.0,主分支的名字为master.

git tag -a tag-1.2 -m '创建trunk为tag1.2'

 git push origin tag-1.2

1.执行:git origin fetch 获得最新.

2.通过:git branch <new-branch-name> <tag-name> 会根据tag创建新的分支.

例如:git branch newbranch v1.0 . 会以tag v1.0创建新的分支newbranch;

3.可以通过git checkout newbranch 切换到新的分支.

4.通过 git push origin newbranch 把本地创建的分支提交到远程仓库.

现在远程仓库也会有新创建的分支啦.

原文地址:https://www.cnblogs.com/floraCnblogs/p/git.html