赞
踩
git version
sudo apt-get update //更新软件源列表
sudo apt-get install git git-core
ssh -T git@github.com
备注:认证失败(后面步骤会进行SSH认证)
git config --global user.name "wjy"
git config --global user.email "wjydym@163com"
git config --list
进入指定的cd ~/.ssh目录
ssh-keygen -C "wjydym@163.com" -t rsa
(1)上传已有工程代码到Github
①创建一个Github一个远程仓库
②记录远程Github仓库源的链接
备注:记住SSH链接等等ubuntu下添加远程Github远程仓库的源的时候要用到
③回到ubuntu下
到你想要上传到Github的工程代码目录下
执行命令:
git init
git add .
git status
git commit -m "初次提交工程代码"
④添加要关联Github远程仓库
git remote add origin 复制项目的url
例如:git remote add origin git@github.com:chenzhiqin520/Allot_Mac_End-break_Server.git
⑤拉取Github远程仓库master分支代码同步到本地
git pull origin master
⑥提交本地的工程代码到远程仓库master分支
git push -u origin master
⑦查看上传的结果,大功告成
(2)从github拉取被人的代码修改,比较简单
git clone https://github.com/chenzhiqin520/MAC_ALLOT_SYSTEM.git
备注:任何取消一个目录的git初始化
rm -rf .git
【干货整理】最近从 0 学习Git,详细分类总结了这份 Git 命令宝典_帅地-CSDN博客_git鼠标垫
1.1 配置全局账户,也就是该账户对所有的 Git 仓库都有效
- git config --global user.name '你的账户名称'
- git config --global user.email '你的 Email'
1.2 配置局部账户,也就是该账户只对当前 Git 仓库有效
- git config --local user.name '你的账户名称'
- git config --local user.email '你的 Email'
注意,不同点就是一个参数是 global(全局),一个是 local(本地)
配置了之后,显然有时候是需要查看我们当前配置的相关情况的,可以使用如下命令
2.1 查看 global 类型的配置情况
git config --global --list
2.2 查看某个仓库下的配置情况
git config --local --list
0.1 查看所有命令
git help
1.1 查看变更情况
git status
1.2 查看当前工作在哪个分支上
git branch -v
1.3 查看远端所有分支
git branch –r
1.4 查看本地分支
git branch
1.5 查看本地分支和远程分支
git branch –a
1.6 查看哪些分支合并到当前分支来
git branch –merged
1.7 查看哪些分支没有合并到当前分支
git branch –no –merged
1.8 重命名分支
- git branch –m 旧分支 新分支 //非强制
- git branch –M 旧分支 新分支 //强制
1.9 切换到指定分支
git checkout 指定分支的名称
1.10 把当前目录及其子目录下所有变更都加入到暂存区
git add . #注意,add 后面是一个 '.';
1.11 把仓库内所有变更都加入到暂存区
git add -A
1.12 把指定文件添加到暂存区
git add 文件1 文件2 ... 文件n
1.13 创建正式的 commit,也就是把当前的数据提交上去
git commit -m "备注信息"
1.14 放弃指定的文件修改,注意是 空格--空格
git checkout -- filename
1.15 放弃所有的文件修改
git checkout .
1.16 放弃所有未跟踪文件的修改
git clean -f
1.17 放弃所有未跟踪目录的修改
git clean -fd
git diff 不加cache修饰则是比较工作区
2.1 比较某文件工作区和暂存区的差异
git diff 某文件
2.2 比较某文件暂存区和 HEAD 的差异
git diff --cache 某文件
2.3 比较工作区和暂存区的所有差异
git diff
2.4 比较暂存区和 HEAD 的所有差异
git diff --cache
2.5 比较工作区和指定commit-id的差异
git diff commit-id
2.6 比较工作区和指定commit-id的差异,只展示文件列表名
git diff --name-status commit-id
2.7 比较工作区和指定commit-id的差异,只展示文件列表名和修改数统计
git diff --stat commit-id
3.1 把工作区指定文件恢复成和暂存区一样
git checkout 文件1 文件2 ... 文件n
3.2 把暂存区指定文件回复和 HEAD 一样
git reset 文件1 文件2 ... 文件n
3.3 把暂存区和工作区所有文件恢复成和 HEAD 一样
git reset --hard
3.4 删除最后一次提交
git reset --hard HEAD^
3.5 用 difftool 比较任意两个 commit 的差异
git difftool commit1 commit2
注意,从工作区回滚到暂存区则用 checkout ,否则用 reset
查看哪些文件没有被 Git 管控
git ls-files --others
git stash
- git stash pop // pop 相当于栈的出栈和入栈一样,把之前的任务弹出来
- 或者
- git stash apply // 和 pop 不同的是, apply 相当于从栈顶把任务取出来,但是不过从栈中把任务移除
git stash list
git stash pop stash @{数字n}
我们的仓库的内容每次变更执行 commit 的时候,都会生成一个新的 commit,不过有时候,我们不想产生新的 commit,而是想要通过修改之前的 commit 来变更仓库的内容,那么就可以使用如下命令了
- 在工作区中修改文件
- git add
- git commit --amend
- git rebase -i X前面的一个 commit 的 id
- 在工作区修改文件
- git add
- git rebase --contiue
当我们在本地仓库中提交了多次,在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把如下分支B、C、D三个提交记录合并为一个完整的提交,然后再push到公共仓库。
这里我们使用命令:
git rebase -i [startpoint] [endpoint]
其中-i
的意思是--interactive
,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]
则指定了一个编辑区间,如果不指定[endpoint]
,则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。 在查看到了log日志后,我们运行以下命令:
git rebase -i 36224db
或者
git rebase -i HEAD~3
然后我们会看到如下界面:
上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commit id 前面的pick表示指令类型,git 为我们提供了以下几个命令:
- pick:保留该commit(缩写:p)
- reword:保留该commit,但我需要修改该commit的注释(缩写:r)
- edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
- squash:将该commit和前一个commit合并(缩写:s)
- fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
- exec:执行shell命令(缩写:x)
- drop:我要丢弃该commit(缩写:d)
根据我们的需求,我们将commit内容编辑如下:
- pick d2cf1f9 fix: 第一次提交
-
- s 47971f6 fix: 第二次提交
-
- s fb28c8d fix: 第三次提交
上面的意思就是把第二次、第三次提交都合并到第一次提交上
然后wq
保存退出后是注释修改界面:
可以再浏览态 按下两个dd可以删除一行
最终的编辑效果如下:
编辑完保存即可完成commit的合并了:
git log --online
git log -n
git log --online --graph --all
git log 某文件
git blame 某文件
1.1 基于当前分支创建新分支
git branch 新分支
1.2 基于指定分支创建新分支
git branch 新分支 已有分支
1.3 基于指定分支创建新分支并且切换到该分支
git branch –b 新分支 现有分支
1.4 基于某个 commit 创建分支
git branch 新分支 某个 commit 的id
1.5创建分支并且切换到该分支
git chechout -b 新分支
2.1 列出本地分支
git branch -v
2.2 列出本地和远端分支
git branch -av
2.3 列出远端所有分支
git branch -rv
2.4 列出名称符号某样式的远端分支
git branch -rv -l '某样式'
3.1 安全删除本地某分支
git branch -d 要删除的分支
3.2 强行删除本地分支
git branch -D 要删除的分支
3.3 删除远程端分支
- git branch –r –d origin/要删除的分支
- git push origin :要删除的分支
注意:origin 后的空格
3.4 强行删除远程端分支
- git branch –r –D origin/要删除的分支
- git push origin :要删除的分支
3.5 删除已合并到 master 分支的所有本地分支
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
3.6 删除远端 origin 已不存在的所有本地分支
git remote prune origin
从 commit 打上标签
git tag 标签名 commit 的id
5.1 把 A 分支合入到当前分支,且为 merge 创建 commit
git merge A分支
5.2 把 A 分支合入到 B 分支,且为 Merge 创建 commit
git merge A分支 B分支
5.3 把当前分支基于B分支做 rebase,以便把B分支合入到当前分支
git rebase B分支
5.4 把A分支基于B分支做rebase,以便把B分支合入到A分支
git rebase B分支 A分支
5.5 把 A 分支合入到当前分支
git merge –no –ff A分支
可以保存你之前的分支历史。能够更好的查看 merge历史,以及branch状态。
5.6 用 mergetool 解决冲突
git mergetool
5.7 git rebase 不成功回滚
git rebase --abort
5.8 git rebase 成功后回滚
git reflog
先输入 : git reflog , 查看操作记录,找到rebase前的commit id,再reset即可 。
git reset --hard 对应的id
6.1 挑选一个commit-id合并
git cherry-pick commit-id
6.2 挑选多个commit-id合并
git cherry-pick commit-idA commit-idB
6.3 挑选连续的多个commit-id合并
git cherry-pick commit-idA..commit-idB
6.4 合并冲突
6.4.1 继续合并
第一步:需要合并人解决对应的冲突文件,然后提交到暂存区
git add .
第二步:使用下面的命令继续执行
git cherry-pick --continue
6.4.2 放弃合并,回归原始状态
git cherry-pick --abort
6.4.3 放弃合并,保留状态
git cherry-pick --quit
6.5 联合使用的命令
git remote -v
git remote add url地址
git remote remove remote的名称
git remote rename 旧名称 新名称
git fetch remote
git pull remote名称 分支名
关于 pull 和 fetch 的区别不懂可以看这篇文章从0学习Git:详解git pull和git fetch的区别
git checkout -b new_dev remote名称/new_dev
创建本地分支 new_dev, 并且拉取远端new_dev的代码到本地new_dev
git push remote名称 分支名
- git push remote --delete 远端分支名
- 或者
- git push remote:远端分支名
git push remote 标签名
git push remote --tags
在使用Git过程中,我们经常碰到的就是,build完代码生成的一堆临时文件,也出现在Git Status中。在Commit时,明明可以用Git Add .一句完成的,结果被迫使用Git Add File一句一句添加。使用以下方法,如果我们已经明确哪些文件不需要提交,下次即使更改了也不会出现在Git Status里面。
在git项目的目录,输入:
touch .gitignore
在.gitignore文件中输入要忽视的文件或文件夹
使用.gitignore是不行的。使用以下命令添加需要忽视的文件
git update-index --assume-unchanged <files>
使用以下命令取消忽视
git update-index --no-assume-unchanged <files>
将整个工程下载下来,因为历史版本包含在其中。若存在该工程一直维护的GIT本地文件夹,跳过此步骤。
进入历史版本界面,找到你想下载的版本
先cd到项目文件夹内,再git checkout SHA
然后直接看你的文件夹,内容已经更改为历史版本了。
这一步很重要。为保证后续工程更新,防止git push -u origin master无法使用。使用git check master切回master分支,而不是使用git checkout master分支的SHA。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。