1、下载git?
git-scm.com
2、获取帮助
git help
git help config
3、什么是Git?
版本控制系统,Version Control System, VCS。它允许我们提交变化到源代码管理库,并且跟踪变化。允许develope在同一套代码库上协同工作。是现代的、分布式版本控制系统。
4、一些关键词?
Branch
Merge
Commit:发生在本地
Push
Pull
5、git的历史
创建于2005年,一开始Linux kernel使用BitKeeper作为版本控制系统,后来Linus kernel和BitKeeper拆分,BitKeeper的拥有公司无法再提供免费服务,Linux需要一个新的版本控制系统替代BitKeeper,Linux的程序员们开始重造轮子,并在以后完善了社区,并诞生了GitHub.
6、CVS和DVC?
CVS是Centralized Version Control,程序员们向同一台中央服务器提交;DVC是Distributed Version Control,每个人都有自己的代码控制库,每次提交是提交到本地的,每次提交了一个新版本的代码,然后是push到远程。多人协作的一个场景:A和B协同工作,A把代码commit到本地,B直接从A的本地代码库pull,当A完成阶段工作,push到远程代码服务器,B现在可以从远程代码库pull代码了。
7、一些命令?
init,创建本地代码库
status,本地代码库的状态,显示没有commit的变化
add,把文件放到本地代码库
commit,把变化提交到本地代码库
log,显示提交的所有变化
push,push所有的变化到远程代码服务器,还可以提交到多个地方
pull,从远程代码服务器或其它代码库pull变化
merge,合并变化
8、git配置
git config --global user.name "darren"
git config --global user.email "[email protected]"
git config --global --list
信息被存放在了管理员文件夹中的.gitconfig文件中,大致是:
[user]
name = darren
email = [email protected]
git config --global core.editor note 使用哪个编辑器
git config --global help.autocorrect 1 当出现错误命令会有提示
git config --global color.ui auto 设置字体颜色等
git config --glboal core.autocrlf false windows下推荐使用
以上的设置是System级别的。
还可以设置用户级别的,用户级别可以覆盖System级别。
git config user.name "jack"
用户级别移除设置:git config --unset core.autocrlf
9、创建本地代码库, 追加文件, 提交变化
→ 来到某个文件夹,打开命令行窗口
→ 创建本地代码库
git init
→ 在文件夹内创建一个README.txt文件
→ 查看本地代码库的状态
git status
红色字体表示没有被tracked的文件
→ 把文件添加到本地代码库,使文件可以被track
git add README.txt
git add -u 用来add刚被更新的文件,而不是刚添加的文件
git add -A add所有文件到staging area被track等待被commit
此时,再运行git status,README.txt变成绿色,说明已经被track
→ commit变化
git commit
→ 查看历史
git log
10、历史版本和版本差异
→ 查看历史版本
git log
→ 查看版本差异
git diff dd6819..a15ec6
→ 查看最近的历史版本
git diff HEAD
→ 查看最近的历史版本之前的版本
git diff HEAD~1
→ 查看最近历史版本和之前一个版本的差异
git diff HEAD~1..HEAD
也可以写成
git diff HEAD~1..
11、一次修改多次提交
→ 假设修改了2个文件
README.txt
file.txt
→ 查看状态
git status
此时可以看到修改的文件呈红色状态。通常一次commit就好,但这里就分两次commit
→ 第一次add
git add file.txt
→ 第一次commit
git commit -m "blablabla"
→ 第二次add
git add README.txt
→ 第二次commit
git commit -m "second blablabla"
12、删除文件
→ 删除file.txt文件
→ 查看状态
git status
deleted file.txt 并且是红色字体
→ 把删除也放到staging area
git add -u
→ 查看状态
git status
deleted: file.txt 并且是绿色字体
→ commit
git commit -m "blablabla"
也就是说,对于删除的文件,也需要使用git add -u,把删除的文件放在staging area。
13、重命名文件
→ 把file.txt重命名为newfilename.txt
→ 查看状态
git status
deleted: file.txt 红色字体(被重命名的文件在git看来是deleted状态)
nefilename.txt 红色字体(新的文件在git看来是一个untracked状态)
→ 把deleted状态的文件和新文件放到staging area上去
git add -A
→ 查看状态
git status
renamed: file.txt → newfilename.txt 绿色字体(git 记录下了重命名过程)
→ commit一下
git commit -m "blablabla"
14、撤销改变
→ 修改某个文件,比如README.txt
→ 查看状态
git status
modified: README.txt 红色字体
→ 撤销修改
git checkout README.txt
15、撤销多个改变
→ 修改某个文件,比如README.txt
→ 删除某个文件,比如newfilename.txt
→ 查看状态
git status
modified: README.txt 红色字体
deletedL newfilename.txt 红色字体
→ 撤销这2个改变
git reset -hard
→ 查看状态
git status
回到最近的一次HEAD
16、删除文件
→ 创建文件
temp1.txt
temp2.txt
→ 查看状态
git status
temp1.txt 红色字体
temp2.txt 红色字体
→ 删除文件
git clean -f
17、忽略文件
→ 假设创建logs文件夹和线面的log.txt
→ 查看状态
git status
logs/ 红色字体
→ 创建.gitignore文件,内容如下:
/logs/*.txt
/logs/*.log
→ 查看状态
git status
.gitignore 红色字体
→ 把.gitignore文件放到staging area
git add .gitignore
→ 提交
git commit -m "Added .gitignore"
18、拷贝远程网站到本地
→ 拷贝
git clone https://github.com/jquery/jquery.git
→ 查看所有的提交
git log
git log --oneline
19、查看数据
→ 查看总共多少次提交
git log --oneline | wc -1
→ 查看带图标
git log --oneline --graph
→ 查看哪些人提交了哪些
git shortlog
→ 查看哪些人以及邮件
git shortlog -sne
→ 查看更多
比如在github网站上,有一个Graphs菜单,里面有更详尽的信息。
20、查看提交
→ 展示最后一次提交
git show HEAD
→ 展示倒数第二次提交
git show HEAD~1
→ 展示所有提交
git log --oneline
→ 展示最后10次变化
git show HEAD~10
→ 展示某一次提交
git show 5642626
→ 查看远程
git remote
origin 远程名称为origin的代码库
→ 查看远程更多
git remote -v
origin https://github.com/jquery/jquery.git(fetch)
orgin https://github.com/jquery/jquery.git(push)
21、Git Protocol
● git支持http、https、git、ssh和file协议
● http的默认端口是80,https的默认端口是443,可以设置
● 对于比如说github上的网站,通常读取是自由的,但写通常需要密码
● git protocol
git 9418 git://github.com/jquery/jquery.git
● ssh protocol
ssh 22 [email protected]:jquery/jquery.git
● file protocol
file n/a /Users/James/code/jquery
22、查看分支和标签
→ 查看本地分支
git branch
→ 查看远程分支
git branc -r
→ 查看tag
git tag
可以看到所有版本
23、本地代码库复制到远程,在远程创建代码库
→ 在本地代码库基础上创建远程代码库
git remote add origin https://github.com/Darrenji/example.git
24、从远程fetch
→ fetch
git fetch
把远程所有变化拉到本地
→ fetch某个分支
git fetch origin
25、远程变化同步合并到本地
→ 远程有一个变化,有可能是另外一个程序员提交
→ 同步合并到本地
git merge origin/master
26、从远程拉
→ 查看远程分支
git branch -r
origin/master 红色字体
→ 现在准备拉pull,pull等同于:git fetch; git merge origin/master
→ 建立远程和本地的映射
git branch --set-upstream master origin/master 第一个master是指本地
→ 开始拉
git pull
27、推到远程
→ 本地提交一些变化
git commit -am "blabla"
→ 推
git push
输入用户名
输入密码
当然还可以在推之前删除远程
→ 删除远程
git remote rm origin
→ 列出远程
git remote -v
→ 重新创建一个SSH协议的远程
git remote add origin [email protected]:Darren/Example.git
→ 推
git push
注意:SSH协议这里使用SSH key进行认证用户
28、创建标签
→ 创建标签
git tag v1.0
git tag -a v1.0_with_message
git tag -s v1.0_signed
→ 列出所有标签
git tag
→ 列出某个标签
git tag -v v1.0_signed
29、把标签推到远程
→ 默认情况下git不推标签
git push --tags
30、可视化分支
→查看现有分支下的提交
git log --graph --oneline
→ 查看所有分支下的提交
git log --graph --oneline --all --decorate
--all所有分支
--docorate比如HEAD,tag等
还可以把以上的选项放到全局去并使用别名调用:
→ 全局设置
git config --global alias.lga "log --graph --oneline --all --decorate"
→ 使用新的命令
git lga
31、创建本地分支
→ 创建本地一个分支
git branch feature1
→ 跳转到feature1这个分支
git checkout feature1
→ 查看所有分支下的提交
git log --graph --oneline --all --decorate
32、分支和标签的区别
branch会跟着commits,tag始终跟着一个commit。
→ 创建一个分支并让它跟着一个commit
git branch fix1 974b56a
→ 切换到fix1
git checkout fix1
→ 修改fix1下的某个文件
→ 提交
git commit -am "blabla"
33、重命名和删除分支
→ 重命名分支
git branch -m fix1 bug1234
→ 删除分支
git branch -d bug1234
→ 想git报告删除分支的事
git branch -D bug1234
→ 创建并切换到新创建的分支
git checkout -b feature2
34、把删除的分支找回来
→ 输入如下
git reflog
5a78c8b [email protected]{3}: commit: Fixed bug#1234
→ 找回分支
git branch bug1234 5a78c8b
→ 切换到找回的分支
git checkout bug1234
→ 展示HEAD
git show HEAD
注意:commit保存期只有30天
35、不提交变化隐藏变化
→ 修改某个文件,比如README.txt
→ 查看状态
git status
modified: README.txt 红色字体
→ 隐藏变化
git stash
→ 查看隐藏的所有变化
git stash list
36、创建远程分支
→ 推到远程的某个分支上
git push origin master
→ 把本地branch推到远程
git push origin v1.0_fixes
远程会多了一个分支
→ 查看远程分支
git branch -r
37、删除远程分支
→ 先推到远程分支
git push origin v1.0_fixes
git push origin v1.0_fixes:v1.0_fixes_remote_branch_name(远程和本地分支名称不一样)
→ 删除远程分支
git push origin:v1.0_fixes_remote_branch_name
38、git网站设置
通常在git网站,比如github, coding.net都会有一些基本设置的地方。