Git
-
git是一个分布式的版本控制软件,版本控制最早期是文件的复制粘贴、下一个阶段是集中管理、现在是分布式管理。
-
集中管理是将文件存储到一个地方,优点是解决了共同开发,缺点也很明显就是如果存储的地方出现问题就无法使用了。
-
分布式管理就很好了在网络中的每个点都存储一遍,优点是哪个节点出现问题都不影响其他节点。
-
安装:去https://git-scm.com/下载后,点下一步即可。
1.基本使用
-
右键点击bash here,版本查看
git --version
。 -
进入要管理的文件夹打开Bash Here后,输入
git init
作用是初始化,初始化后需要查看一下文件夹中的文件使用git status
。 -
查看后你会发现文件是红色的,红色代表未在工作区,我们需要将其添加到缓存区使用
git add "FileName"
或全部添加git add .
,文件修改后并不在管理范围之内,所以需要再次添加并生成新的版本。 -
我们第一次使用git去生成版本时会出现一个提示,说是要你填写Email and Name,填写这两个是为了让git记住你。
git config --global user.email "[email protected]" git config --global user.name "Your Name"
-
添加完之后我们需要生成版本使用
git commit -m "VersionName"
,生成版本后我们肯定要查看的所以我们使用git log
查看。 -
版本生成后你就会发现,如果有一天需要将一个功能取消,你不可能一行一行去删,这里只能用到回滚了。
git add "FileName" # 添加到缓存区 git commit "versionName" # 添加到版本库 git reset --soft "VersionNum" # 退回到缓存区 git reset head "FileName" # 退回到工作区(exit) git check out "FileName" # exit退回到start git reset --mix "VersionName" # 版本库退回到工作区exit git reset --hard "VersionName" # 版本库退回到工作区start(想退回到上一个版本,就查看历史版本后,使用这条命令) git reflog # 查看历史版本
-
你有没有想过版本库的存储方式是什么,如果我有两个功能要开发你需要找两个人开发,而版本库需要使用分支来存储,分支的好处在于两个人的开发并不会互相影响。有多个分支要合并时,如果两个分支修改同一行代码时,会出现提示需要手动删除不需要的合并部分。(合并时先转到主分支)
git branch # 查看分支 git branch "BranchName" # 创建分支 git checkout "BranchName" # 切换分支 git merge "BranchName" # 合并分支 git branch -d "BranchName" # 删除分支
-
在公司我们开发需要至少创建两个分支,一个是正式分支、另一个是开发分支,只有开发分支稳定后再去合并到正式分支中。
2.远程仓库(GitHub)
-
远程仓库GitHub存储你写的代码前需要创建账户和仓库,创建后拿到仓库RUL后到自己的电脑上使用以下命令即可。
git remote add "origin" "URL" # 给仓库创建别名 git push -u "origin" "master" # 推送分支到仓库 git clone "URL" # 克隆远程的仓库并帮你给仓库起别名为origin,创建别名只需要一次即可。 git pull "origin" "dev" # 更新本地代码
-
在
git pull "origin" "dev"
等于git fetch "origin" "dev"
(是将github上的代码拉到版本库的)+git merge origin/dev
(是将拉到版本库的代码放到工作区)。 -
在工作中代码需要合并的,这里我们在合并有三种应用场景。
-
在工作中版本太多后,给老板给时不可能交给多个版本,我们只能将版本合并起来交给老板。
git rebase -i "VersionNum" # 将该码以上的全部合并 git rebase -i HEAD~3 # 合并当前版本下3个,版本可以随意。 # 注意: 修改前面为s,s代表将s代表的合并到pick版本上。 版本合并时会出现描述,你需要写一下描述。
-
在两个分支便携时会出现,分支合并并不会直接合并只会让它新生产一个版本合并的,而你想合并成一条时可以如下操作。
git checkout dev git rebase master git chekcout master git merge dev git log --graph --pretty-format:"%h %s" # 简化显示
-
在GitHub上的代码是最新的,而在你的电脑上的并不是,你需要拉下来但是拉下来会新创建一个版本,我们可以使用一下代码将其合并。
git fetch "origin" "dev" git checkout "dev" git rebase "master" git rebase --continue # 注意:修改冲突带代码,后并添加到暂存区后继续执行下去。
-
-
我们在公司开发时,git的使用应该是一个主分支,一个开发分支,在开发分支下又有多个功能分支,功能分支完成开发后合并到开发分支,开发分支需要先合并到测试分支,测试完之后再合并到主分支即可。
3.其他
3.1 快速解决冲突
-
快速解决冲突我们需要使用的一个软件,“beyond compare”用来快速解决冲突代码。
-
我们需要在git中配置该文件后,才可以使用。
git config --local merge.tool bc3 # 起名字为bc3 git config --local mergetool.path "PATH" # 指定软件路径 git config --local mergetool.keepBackup false # 解决冲突后并不保留,备份
-
剩下的就是使用了,用
git mergetool
启动beyond compare。
3.2 git配置文件
-
git有三个配置文件,项目、所有项目和系统三种,使用不同的命令配置。
-
配置文件的位置。
# 项目配置文件"project/.git/config" git config --local # 全局配置文件"~/.gitconfig" git config --global # 系统配置文件"/etc/.gitconfig" git config --system
3.3 GitHub免密登录
-
URL中免密,是使用将用户名密码拼接在连接中并配置在,git配置文件中实现的。
git remote add origin https://UserName:[email protected]/...
-
SSH实现免密,使用公钥和私钥将其实现免密,是将公钥放到GitHub的settings中配置后即可使用。
# 生成公钥和私钥(默认放在~/.ssh目录下的,id_rsa.pub公钥、id_rsa私钥) ssh-keygen git remote add origin [email protected]/...
3.4 git忽略文件
-
git想要忽略文件就需要创建一个文件
gitignore
并在里面写如需要忽略的文件。(*.h:应用.h结尾文件、!a.h:不应用这个文件、files/:忽略该文件夹下的所有文件、a.py[a|b]:忽略a.pya和a.pyb的文件)。
标签:origin,git,--,合并,Git,版本,分支 From: https://www.cnblogs.com/InvincibleGrass/p/17362551.html