Git学习笔记
Git学习笔记
初步设置
git config --global user.name "Your Name" //配置用户名
git config --global user.email "email@example.com" //配置邮箱
创建版本库
mkdir BruteDemo
cd BruteDemo
pwd
git init //把这个目录变成Git可以管理的仓库
将文件添加到仓库
git add ssh_brute.py //将文件ssh_brute.py添加到仓库
git commit -m "ssh brute demo" //commit只会提交已经add的文件,-m后面输入的是本次提交的说明
获取仓库最新状态
$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: ssh_brute.py
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
查看修改内容,#git test
是修改内容
$ git diff ssh_brute.py
diff --git a/ssh_brute.py b/ssh_brute.py
index e273cfa..80dec18 100644
--- a/ssh_brute.py
+++ b/ssh_brute.py
@@ -1,4 +1,5 @@
#coding=utf-8
+#git test
from pexpect import pxssh
def coon(hostname,user,password):
版本回退
版本1:提交ssh_brute.py
版本2:在ssh_brute.py中添加一行#git test
查看commit历史版本
$ git log
commit 777cad51cfb2b0001faf73c82bcd146ffc7ba4af
Author: mark-zh <mark.xiaoyuer@gmail.com>
Date: Thu Jun 20 11:01:45 2019 +0800
change test
commit b7415ca096c5eb12b94506e71c22343f2f3c1617
Author: mark-zh <mark.xiaoyuer@gmail.com>
Date: Thu Jun 20 10:42:15 2019 +0800
ssh brute demo
简化输出
git log --pretty=oneline
回退到上一个版本,可以cat
文件查看是否成功
$ git reset --hard HEAD^
HEAD 现在位于 b7415ca ssh brute demo
回退到指定版本,git reset --hard id
,版本号写前几位即可
$ git reset --hard 777ca
HEAD 现在位于 777cad5 change test
$ git log --pretty=oneline
777cad51cfb2b0001faf73c82bcd146ffc7ba4af change test
b7415ca096c5eb12b94506e71c22343f2f3c1617 ssh brute demo
查看版本回退记录
$ git reflog
777cad5 HEAD@{0}: reset: moving to 777ca
b7415ca HEAD@{1}: reset: moving to HEAD^
777cad5 HEAD@{2}: commit: change test
b7415ca HEAD@{3}: commit (initial): ssh brute demo
工作区和暂存区
工作区:如BruteDemo
文件夹就是一个工作区。
版本库:工作区有一个隐藏目录.git
,这个不算工作区,而是Git版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
Git工作原理
第一步git add添加文件,把文件修改添加到暂存区。
第二步git commit提交更改,把暂存区的所有内容提交到当前分支。
创建Git版本库时,Git自动为我们创建了唯一一个master分支,git commit就是往master分支上提交更改。
管理修改
撤销修改
git checkout -- file
git reset HEAD file
删除文件
git del test.txt
git commit -m "del test.txt"
误删恢复
git checkout -- test.txt
远程仓库
创建SSH key
ssh-keygen -t rsa -C "youremail@example.com"
然后登录github,的设置,Settings
-- SSH keys
,添加id_rsa.pub
就ok
添加远程仓库
登录github,点击new repository
,本地关联远程库
git remote add origin git@github.com:mark-zh/BruteDemo.git
第一次把本地库的所有内容推送到远程库
git push -u origin master
以后的每次推送
git push origin master
从远程仓库克隆
git clone target
分支管理
查看分支:git branch
,*
表示当前分支
创建分支:git branch name
切换分支:git checkout name
创建+切换分支:git checkout -b name
合并某分支到当前分支:git merge name
删除分支:git branch -d name
多人协作
查看远程库信息
git remote
git remote -v //显示详细信息
抓取分支
git clone git@github.com:mark-zh/program.git
创建开发分支
git checkout -b dev origin/dev
推送分支,把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支
git push origin master
git push origin dev //推送dev分支到远程库
提交冲突时,执行git pull
获取最新origin/dev
,本地合并,解决冲突,重新push
git pull
失败解决:原因是没有指定本地dev
分支与远程origin/dev
分支的链接,根据提示,设置dev
和origin/dev
的链接
git branch --set-upstream-to=origin/dev dev
报错问题解决
- 当前分支的最新提交落后于其对应的远程分支
error: 无法推送一些引用到 'git@github.com:mark-zh/BruteDemo.git'
提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
提示:再次推送前,先与远程变更合并(如 'git pull ...')。
解决办法:先从远程库fetch到更新再和本地库合并
git fetch origin //获取远程更新
git merge origin/master //把更新的内容合并到本地分支