Git学习 命令
基本操作 代码克隆
查看状态
添加所需要push的文件或文件夹
1 git add . # 递归选定当前路径下的所有文件
给修改的文件进行注释
推送
推送你的代码到github仓库
1 2 3 4 git push # git push -u origin master # 如果新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了: # git push origin master
空仓库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //如何使用git上次自己的代码. cd project_path //进入到工程目录 git init //初始话git仓库 git add . //添加当前项目的所有文件 //添加省份标识: git config --global user.email "you@example.com" //你的邮箱 git config --global user.name "Your Name" //你的姓名 //git commit git commit -m "Your_msg" //预提交. -m 是代表一些注释. //创建SSH KEY ssh-keygen -t rsa -C "youremail@example.com" 将 ~/.ssh/id_rsa.pub中的内容添加到github中 登录Github,找到右上角的图标,打开点进里面的Settings,再选中里面的SSH and GPG KEYS,点击右上角的New SSH key,然后Title里面随便填,再把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面,最后点击Add SSH key 第九步:关联好之后我们就可以把本地库的所有内容推送到远程仓库(也就是Github)上了,通过: git remote add origin git@github.com:I0gan/Litalk.git
.gitignore 创建工程时,按照工程采用的语言框架在项目根目录下自行定义 .gitignore文件对不需要push的文件进行排除。
例如Unity3d项目的.gitignore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 UserSettings # ProjectSettings .vscode # This .gitignore file should be placed at the root of your Unity project directory # # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore # /[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ /[Mm]emoryCaptures/ # Asset meta data should only be ignored when the corresponding asset is also ignored !/[Aa]ssets/**/*.meta # Uncomment this line if you wish to ignore the asset store tools plugin # /[Aa]ssets/AssetStoreTools* # Autogenerated Jetbrains Rider plugin [Aa]ssets/Plugins/Editor/JetBrains* # Visual Studio cache directory .vs/ # Gradle cache directory .gradle/ # Autogenerated VS/MD/Consulo solution and project files ExportedObj/ .consulo/ *.csproj *.unityproj *.sln *.suo *.tmp *.user *.userprefs *.pidb *.booproj *.svd *.pdb *.mdb *.opendb *.VC.db # Unity3D generated meta files *.pidb.meta *.pdb.meta *.mdb.meta # Unity3D generated file on crash reports sysinfo.txt # Builds *.apk *.unitypackage # Crashlytics generated file crashlytics-build.properties Assets/Plugins Assets/Plugins.meta Assets/StreamingAssets Assets/StreamingAssets.meta Assets/ThirdParty Assets/ThirdParty.meta Assets/K2Examples Assets/K2Examples.meta NuiDatabase obj msc .vs *.jpg *.dll OpenNI2 *.ini *.data
合作工程 多日参与git项目编写时,得需要注意某些事项。
编写代码之前注意事项 每次写代码或者修改文件之前,先git pull一下,确保当前代码状态是最新的,这样之后出现冲突的几率少一些,改冲突也没那么麻烦了。
编写代码之后注意事项 修改了一些重要代码文件之后,尽快push到远程仓库。
提交步骤
先对自己修改的文件打Commit,
再点击Fetch,
之后有Pull的话也点击Pull,
最后Push
出现冲突解决步骤: 先打commit,再pull,打开文件解决冲突 , push
Git撤销&回滚操作 开发过程中,你肯定会遇到这样的场景:
场景一:
1 糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作!
场景二:
1 彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!
场景三:
1 刚才我发现之前的某次提交太愚蠢了,现在想要干掉它!
撤销 上述场景一,在未进行git push
前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”!
情况一:文件被修改了,但未执行git add
操作(working tree内撤销)
1 2 git checkout fileName git checkout .
情况二:同时对多个文件执行了git add
操作,但本次只想提交其中一部分文件
1 2 3 4 $ git add * $ git status # 取消暂存 $ git reset HEAD <filename>
情况三:文件执行了git add
操作,但想撤销对其的修改(index内回滚)
1 2 3 4 # 取消暂存 git reset HEAD fileName # 撤销修改 git checkout fileName
情况四:修改的文件已被git commit
,但想再次修改不再产生新的Commit
1 2 3 # 修改最后一次提交 $ git add sample.txt $ git commit --amend -m"说明"
情况五:已在本地进行了多次git commit
操作,现在想撤销到其中某次Commit
1 git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]
回滚 上述场景二,已进行git push
,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!*注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!*
如果你每次更新线上,都会打tag ,那恭喜你,你可以很快的处理上述场景二的情况
如果你回到当前HEAD指向
1 git checkout <branch_name>
情况一:撤销指定文件到指定版本
1 2 3 4 # 查看指定文件的历史版本 git log <filename> # 回滚到指定commitID git checkout <commitID> <filename>
情况二:删除最后一次远程提交
方式一:使用revert
1 2 git revert HEAD git push origin master
方式二:使用reset
1 2 git reset --hard HEAD^ git push origin master -f
二者区别:
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
情况三:回滚某次提交
1 2 3 # 找到要回滚的commitID git log git revert commitID
删除某次提交 1 2 git log --oneline -n5 git rebase -i ``"commit id"``^
注意:需要注意最后的^ 号,意思是commit id的前一次提交
1 git rebase -i "5b3ba7a"^
在编辑框中删除相关commit,如pick 5b3ba7a test2
,然后保存退出(如果遇到冲突需要先解决冲突)!
1 git push origin master -f
通过上述操作,如果你想对历史多个commit进行处理或者,可以选择git rebase -i
,只需删除对应的记录就好。rebase还可对 commit 消息进行编辑,以及合并多个commit。
git reset –hard HEAD^
加引号:git reset -hard "HEAD^"
加一个^:git reset -hard HEAD^^
换成:`git reset –hard HEAD或者
git reset –hard HEAD1
` 后面的数字表示回退几次提交,默认是一次
ref: https://www.cnblogs.com/heqiyoujing/p/10461015.html