1.基本命令
# 配置邮箱和名称,实际配置是写~.gitconfig文件 git config --global user.email git config --global user.name xxx $cat .gitconfig [user] email = name = xxx # 创建本地分支v1 git branch v1 #删除本地分支 git branch -D v1 #新建了远程分支,在实际中使用git push 实际是把当前分支推送到了远程对应的分支上,git push的一般格式: git push 仓库名称 本地分支名称:远程分支名称 git push --set-upstream origin v1:v1 //将本地v1分支推送到远程仓库origin的分支v1 git push origin v1:master //将本地v1分支推送到远程仓库origin的分支master分支 #删除远程分支 git push origin --delete v1 # 添加文件 git add filename # 删除文件 git rm filename # 查看y有哪些提交要进行push git cherry -v # git fetch与git pull区别 git fetch origin master + git merge FETCH_HEAD(手动merge) = git pull(自动merge) 参考文档: https://weixin110..com/cgi-bin/mmspamsupport-bin/newredirectconfirmcgi?main_type=1&evil_type=110&source=2&bancode=83f6a5515ac2cfce64d4c7fdace76267dac6b2e1a742cb12ff17d59fffd5a0e171fd768c0332faab65e7dc4f25c968ea4e70ca9782fbab70&scene=1&devicetype=Windows+10+x64&click=3b628e8e39ed5efdac21bdf718 # git push origin HEAD:refs/for/master git push 肯定是推送 origin : 是远程的库的名字 HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支 refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的 参考文档: https://blog.csdn.net/u0/article/details/
讯享网
2.常用命令
讯享网#仓库相关命令 #查看远程仓库,origin为默认的远程仓库的名称,origin:仓库名称 xxxx:仓库的url地址 git remote -v origin xxxx (fetch) origin xxxx (push) #添加远程仓库 git remote add test url //由于已经有origin,因此如果git remote add origin会报错 //查看添加后的结果 git remote -v origin xxx (fetch) origin xxx (push) test xxx (fetch) test xxx (push) #推送代码到远程仓库(如果存在多个远程仓库),格式为git push 远程仓库名称 本地分支:远程分支 git push test master:master #切换分支到新建的远程仓库分支 (1)首先查看当前本地分支指向的是哪个远程仓库的哪个分支 git branch -vva * master 7a7d47f [origin/master] feat:add debug function //当前指向为origin/master remotes/origin/master 7a7d47f feat:add debug function remotes/test/master 7a7d47f feat:add debug function (2)切换分支某个仓库下的某个分支,当进行切换时必须是分支是存在的,否则在切换时报错 git branch --set-upstream-to=test/master git branch -avv * master 7a7d47f [test/master] feat:add debug function //当前指向为test/master test 7a7d47f feat:add debug function remotes/origin/master 7a7d47f feat:add debug function remotes/test/master 7a7d47f feat:add debug function #删除远程仓库 git remote remove test #日志相关命令 #查看某次提交的变化,除了列举出哪些文件发生变化还会列举出变化的内容 git show commitId(例如:01efe3050bfb914e3c89ddbec4f94506de0aae1b) #查看某次提交的变化,只列举出变化的文件的名称 git show commitId --stat #查看某次提交某个文件的变化内容,可能这次提交有多个文件进行了提交,只指定文件发生的变化 git show 7a7d47f6cc1b373ca43151a4a4d33419b384ca5c main.cpp #查看某个文件的提交记录,显示整个提交信息 git log main.cpp #查看某个文件的提交记录,只显示提交记录和提交信息 git log --pretty=oneline main.cpp #查看某个文件的所有提交的变化,不仅仅显示提交记录,还会显示提交的变化 git log -p main.cpp #查看2次提交的变化,格式:git diff 旧id 新id git diff 01efe3050bfb914e3c89ddbec4f94506de0aae1b 7a7d47f6cc1b373ca43151a4a4d33419b384ca5c #git如何列出每次提交对应有哪些文件被修改 git log --name-status #查看某个提交人的所有提交记录 git log --author="zk" 参考文档: git 查看某一个文件的(提交/修改)记录 https://blog.csdn.net/_/article/details/ //git查看某次提交/更新所更改的文件 https://blog.csdn.net/dclnet/article/details/?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=3e6d09ff-e0b8-4b9c-b4e6-1b6e6ae68e6c&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control # 撤销与回滚相关命令 工作区 -(通过git add 命令进入)-> 暂存区 -(通过git commit 命令)-> 本地分支 工作区:即自己当前分支所修改的代码,git add 之前的,不包括git add 和git commit之后的 暂存区:已经git add 且未git commit的 本地分支:已经git commit提交到本地分支的 对于工作区的文件: (1)新增加的文件(从未进行过git add操作),并未进入git的管理,直接进行增删改查即可 (2)对于已经进行过git commit的文件,在次提交基础上就行修改的,但是还未进行git add操作的,使用 git checkout filename 命令就行恢复最近的一次提交 git checkout 丢弃某个文件的修改 git checkout . 丢弃全部 对于在暂存区的文件: (1)已经进行git add操作,但是并未进行commit操作 git reset HEAD . 或者 git reset HEAD filename 备注: 这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化 对于本地分支: commit到了本地分支,但是没有git push到远程 git log //得到你需要回退一次提交的commit id //下面两个都是不保留之前已经提交的文件 git reset --hard commitid //恢复到某一次的提交 git reset --hard HEAD~1 //恢复到最近的一次提交 //下面两个都是保留已经提交的文件 git reset commitid //恢复到某一次的提交 git reset HEAD~1 //恢复到最近的一次提交 对于已经提交远程的仓库: (1)通过git reset是直接删除指定的commit git log //得到你需要回退一次提交的commit id git reset --hard <commit_id> git push origin HEAD --force //强制提交一次,之前错误的提交就从远程仓库删除 (2)通过git revert是用一次新的commit来回滚之前的commit git log //得到你需要回退一次提交的commit id git revert <commit_id> # 撤销指定的版本,撤销也会作为一次提交进行保存,指定的commit id 的操作会被取消,但是提交记录会存在 (3)git revert 和 git reset的区别 git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留; git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除 git checkout master //切换到主分支 git pull //从服务端拉取最新代码 git checkout local //切换到本地分支 git rebase master---->如果遇到冲突,解决冲突 git add xxx --->git rebase --continue //解决问所有冲突后,使用该命令继续,当遇到冲突时,可以使用git branch查看当前所在的分支,会默认生成一个分支,当执行该命令没有冲突后,会自动切换到当前分支 git checkout master //切换到主分支 git merge local //合并local分支到主分支 git push //提交代码
重要的参考文档:
https://www.cnblogs.com/daxiong225/p/13472125.html
Git撤销&回滚操作(git reset 和 get revert)
https://www.cnblogs.com/daxiong225/p/13472125.html
Git恢复之前版本的两种方法reset、revert(图文详解
https://blog.csdn.net/yxlshk/article/details/79944535
(3)合并相关命令 git rebase 与 git merge都能进行合并代码 实际应用中具体操作如下: (1)和远程仓库同步当前分支的时候使用git pull origin master --rebase //从远程分支进行合并代码 (2)合并分支的时候使用(处于其他分支,例如test分支) git rebase master(将master分支代码合入进当前分支),如果在主分支(master分支)git merge test(将test分支代码合入进master分支) 参考文档: git rebase简介(基本篇) https://blog.csdn.net/hudashi/article/details// 如何使用Git Rebase https://segmentfault.com/a/55172 git在工作中正确的使用方式----git rebase篇 https://blog.csdn.net/nrsc/article/details/ 使用git rebase合并多次commit https://blog.csdn.net/yangcs2009/article/details/ //将几次提交合并成一次进行提交 git rebase -i <commit>
https://www.cnblogs.com/jmcui/p/9723272.html
Git仓库.git文件夹目录介绍
https://blog.csdn.net/songyuequan/article/details/82933745
//当新建文件时会出现一下信息: git status 出现下列情况表示是新文件,没有被add过,是为跟踪的意思 Untracked files: (use "git add <file>..." to include in what will be committed) bb //git status会出现下列情况git add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思 Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: xxx //对于已经git add后,会出现以下信息 Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: bb //对于已经add后的文件,并且在此基础又进行了修改,git status会出现以下信息 Changes to be committed: //已经git add后的,等待commit的 (use "git restore --staged <file>..." to unstage) modified: bb Changes not staged for commit: //等待git add的 (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: bb (4) 保存临时文件 #保存 git stash #列举出有哪些 git stash list # git stash pop git stash apply git stash drop + stash名字 git stash clear 参考文档: https://blog.csdn.net/_/article/details/ (5)git cherry-pick用法(可以从当前分支进行摘取也可以从其他分支进行摘取) #合并单个commitid,进行该操作后commitid会发生变化 git cherry-pick commitid #多个commitid方法 git cherry-pick commitid1 commitid2 commiti3 #将起commitid1 - commiti3直接的都进行合并,并不包括commitid1 git cherry-pick commitid1..commiti3 //基本用法 https://blog.csdn.net/libinbin/article/details/ //提交多个commitid https://juejin.cn/post/0 $ git cherry-pick commitid Auto-merging aa CONFLICT (content): Merge conflict in aa error: could not apply deda8b3... modify aa hint: after resolving the conflicts, mark the corrected paths hint: with 'git add <paths>' or 'git rm <paths>' hint: and commit the result with 'git commit' //查看有哪些冲突文件 $ git status Unmerged paths: (use "git add <file>..." to mark resolution) both modified: aa //修改好文件后,使用git add 表明已经解决好冲突 $ git add filename //继续,会以cherry-pick的提交作为默认的提交,不用再次使用git commit命令进行提交 $ git cherry-pick --continue (6)修改最新一次的提交 git add filename git commit -m "add filename" #如果有修改变动,需要重新git add git add filename #使用以下命令后,提交的Change-Id不会,提交的commitId会发生变化,适用的场景是:不想要最近一次的提交记录,想重新修改提交 git commit --amend git push origin HEAD:refs/for/分支名 (7)tag的用法 # 查看所有tag git tag # 增加tag git tag tagName 或者 git tag -a tagName -m "my tag" //可以带一些配置信息 git tag -a v1.0 commitid -m "my tag" //给某个提交打上tag # 查看tag的详细信息,重要的是commitid,可以根据commitid进行回溯 git show tagName # 删除tag //删除本地tag git tag -d tagName //删除远端tag git push origin :refs/tags/v1.0 # 上传tag git push origin tagName # 切换到某个tag git checkout tagName 参考文档: https://blog.csdn.net/yang/article/details// (8)比较相关命令 //Git命令查看尚未提交(commit)的已修改文件的具体修改内容 1)默认显示尚未通过git add的文件版本与已经通过git add的但尚未提交的文件版本之间的差别 git diff [filename] 2)显示已经通过git add的但尚未提交的文件版本与最近一次提交的差别; --staged是--cached的别名,是同样的功能。 git diff --cached [filename] git diff --staged [filename] 3)显示尚未通过git add的文件版本与最近一次提交的差别 git diff HEAD [filename] 参考文档: https://blog.csdn.net/pengpengzhou/article/details/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/61713.html