1. 程式人生 > 實用技巧 >【windows + 視窗】 通過FindWindow操作視窗

【windows + 視窗】 通過FindWindow操作視窗

一:介紹

1.什麼是git?

是一種用於協同開發的版本管理工具

2.git能幹什麼?

完成協同開發專案,幫助程式設計師整合程式碼

  • 幫助開發者合併開發的程式碼
  • 如果出現衝突程式碼的合併,會提示後 提交合並程式碼的開發者,讓其解決衝突

2種Git軟體:SVN、Git

  • svn(集中式管理)
  • git(分散式管理、協同開發、版本管理)

常用的git版本控制器管理程式碼的公共平臺

  • github
  • gitee

3.Github、Gitee、Gitlab的區別

  • Github:一般開源的程式碼都放在github,程式碼託管平臺(公有倉庫、私有倉庫),公司程式碼一般不會放在上面
  • Gitee:中國版本的github,開源低嗎放在共有倉庫,有一部分公司的程式碼會託管到gitee的私有倉庫
  • Gitlab:公司自己搭建的github,公司內部自己訪問(可以用Docker拉1個gitlab的映象跑起來)

4.下載連結:https://git-scm.com/

5.安裝

一路下一步即可

6.整體流程

1.有紅色資訊(工作區有內容),就執行 add
2.全綠資訊(內容全部在暫存區),才執行 commit
3.只有被版本庫控制的程式碼,才能被監聽,所以可以回滾到任何一個版本

一:核心操作

1.初始化倉庫

git init
.git目錄預設隱藏,可以通過命令ls -ah顯示

2.把檔案新增到暫存區

新增指定檔案
git add 檔名
一次新增多個檔案
git add . 

3.提交暫存區內容到版本庫

git commit -m '本次提交的說明'

4.把專案提交到(遠端)倉儲

git push

5.撤銷暫存區提交:add的逆運算(很少使用)

①撤銷所有暫存區的提交
git reset HEAD .
②撤銷某一檔案的暫存區提交
git reset 檔名
③撤銷所有暫存區的提交
git reset .

6.過濾檔案

.gitignore 檔案
1.在倉庫根目錄下建立該檔案
2.檔案與資料夾均可以被過濾
3.檔案過濾語法
②過濾檔案內容
檔案或資料夾名:代表所有目錄下的同名檔案或資料夾都被過濾
/檔案或資料夾名:代表倉庫根目錄下的檔案或資料夾被過濾
③eg:
a.txt:專案中所有a.txt檔案和資料夾都會被過濾
/a.txt:專案中只有根目錄下a.txt檔案和資料夾會被過濾
/b/a.txt:專案中只有根目錄下的b資料夾下的a.txt檔案和資料夾會被過濾
*x*:名字中有一個x的都會被過濾(*代表0~n個任意字元)
空資料夾不會被提交,空包會被提交,包可以被提交(包中有一個init空檔案)

7.檢視倉庫當前的狀態

檢視狀態(紅色和綠色),必須全綠再提交到版本庫
git status

8.檢視提交日誌

git log

9.回退版本

①回退到上一版本
git reset --hard HEAD^
②回退到上上版本
git reset --hard HEAD^^
③撤銷所有暫存區的提交
git reset .

10.視窗關閉後回退版本

用來記錄你的每一次命令
git reflog

二:使用者操作

1.設定全域性使用者

git config --global user.name '使用者名稱'
git config --global user.email '使用者郵箱'
在全域性檔案C:\Users\使用者資料夾\.gitconfig新建使用者資訊,在所有倉庫下都可以使用

2.設定區域性使用者

git config user.name '使用者名稱'
git config user.email '使用者郵箱'

在當前倉庫下的config新建使用者資訊,只能在當前倉庫下使用

一個倉庫有區域性使用者,優先使用區域性使用者,沒有配置再找全域性使用者

三:分支管理

1.檢視遠端分支

git branch -a

2.檢視本地分支

git branch

3.建立並切換分支

(加-b表示建立並切換)
git checkout -b 分支名

4.切換回分支

git checkout 分支名

5.從主分支裡建立新分支

git checkout master -b 新分支名

6.合併某分支到當前分支

git merge 分支名

7.刪除分支

git branch -d 分支名
git branch -D 分支名 (強行刪除分支)

四:git遠端連線

1.無倉庫,需要新建

mkdir test
cd test
git init
touch a.txt
git add a.txt
git commit -m "添加了a.txt"
git remote add origin 已有倉庫  # 連線遠端
git push  origin master

2.已有倉庫

cd test
git remote add origin 已有倉庫  # 連線遠端
git push  origin master

3.檢視遠端倉庫(沒有就看不到)

git remote

4.線上回滾

# 1 切換到master分支
# 2 回滾打某個版本  git reset --hard  版本號
# 3 強制提交程式碼 git push origin master -f

五:解決衝突

1.情況1

A和B同時開發專案並且都將伺服器的分支程式碼拉(pull)到自己電腦上
A開發完後,將自己的專案推(push)到了伺服器的分支
A和B修改的是同一行程式碼
B開發完後,沒有先拉(pull),而是直接將自己的專案推(push)到了伺服器的分支
此時,出現了衝突,這個衝突需要由B解決
解決方法:
git merge A_master (在B_dev分支上操作)
-解決衝突(刪你的,同事的,合併起來)
git add .  git commit 
-正常了,衝突解決

2.情況2

master分支上a.py中的第10行程式碼為 x = 1
dev分支上a.py中的第10行程式碼為 x = 99
在master分支合併dev分支
此時同一個檔案的同一行程式碼,在2個分支不同,出現了衝突
解決方法:
# 手動線下合併程式碼並提交到遠端
git checkout master
git merge dev 

-如果出衝突,解決
    -git add .
    -git commit 
    -git push..

五:git專案創始者和開發者

1.專案創世者

負責分支的建立和管理

2.專案開發者

把專案拉下來,繼續開發
git clone https://gitee.com/xxxxxx/xxxx.git
    -能看到完整的版本和日誌控制
    -可以回覆到任意版本
    
git rest --hard 版本號
git checkout . # 表示回到指標指向的版本,因為已經用git rest --hard把指標移動了,所以checkout .就是當前再的版本上的東西

 #本地新增c.txt檔案
    -提交到暫存區
    -提交到版本庫(沒有提交到遠端,遠端看不到)
    -提交到遠端:git push origin master
    
# 讓a資料夾中的程式碼成為最新的
    -git pull origin master
重點:每次再提交程式碼之前,一定要先更新程式碼(拉),如果不拉提不上去

六:ssh連線和https連線

1.公司內部大部分用ssh連線

-領導給你一個git地址(專案地址)
-你 git clone 地址  到本地
-改程式碼,改完了---》提交(禁止)
-ssh配置,以後都不用輸密碼了

2.配置如何做

-對稱加密(加密和解密用同一套祕密)
-非對稱加密(公鑰和私鑰),公鑰加密,私鑰解密

-生成一對公鑰和私鑰(用命令)
    -https://gitee.com/help/articles/4181
    -ssh-keygen -t rsa -C "[email protected]" 生成到使用者家目錄的.ssh資料夾下(一個公鑰,一個私鑰)  
    -把公鑰複製出來,去碼雲上配置

3.跟遠端操作有三個命令

git pull
git push
-git feacth(一般不用,他跟pull是一個東西,當作不知道)

七:pycharm操作git

1.建立一個資料夾,右鍵Git Bash here,輸入下面命令

git init
此時,會生成一個.git的隱藏資料夾

2.將專案克隆下來

git clone https://xxxxx.gitee.com.xxx.git

3.右鍵 - 用pycharm開啟

4.點選左上角:File - Settings,進行如圖操作,可以獲取到Git當前版本

5.2個按鈕的功能

6.更多功能

7.一步到位的操作(修改+新增到暫存區+註釋並新增到版本庫+push到遠端倉庫)

八:其他操作

1.檢視ssh金鑰

①進入.ssh目錄
cd ~/.ssh
②檢視id_rsa.pub檔案
cat id_rsa.pub

2.克隆遠端專案

git clone 遠端源地址

3.刪除檔案

①刪除版本庫中的檔案
git rm filename
②恢復工作區中誤刪的檔案
git checkout -- filename

PS:git checkout其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”

4.遠端倉儲

①建立ssh key金鑰
ssh-keygen -t rsa -C "[email protected]"
②在遠端倉庫中新增ssh公鑰
③關聯遠端庫
git remote add origin git@server-name:path/repo-name.git
④第一次推送master分支的所有內容,此後只需要使用git push origin master即可推送最新修改
git push -u origin master

5.多人協作

①檢視遠端倉儲的詳細資訊
git remote -v

②推送本地分支到遠端倉庫
git push origin 本地分支名

如果發生衝突,用git pull試圖合併,如果發生衝突則解決衝突,再進行推送

如果git pull後提示no tracking information(沒有追蹤資訊),則進行第四項,建立關聯,之後pull,有衝突再合併

③在本地建立和遠端分支對應的分支
git checkout -b 本地分支 origin/遠端分支名
④建立本地分支和遠端分支的關聯
git branch --set-upstream 本地分支名 origin/遠端分支名

6.分支策略

1.master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

2.幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本釋出時,再把dev分支合併到master上,在master分支釋出1.0版本;

3.每個人都有自己的分支,時不時地往dev分支上合併就可以了

7.git fetch和git pull的區別

與git pull相比git fetch相當於是從遠端獲取最新版本到本地,但不會自動merge。如果需要有選擇的合併git fetch是更好的選擇。效果相同時git pull將更為快捷。

九:修改已有專案的流程

1.初始化倉庫

git init

2.設定區域性使用者

git config user.name '使用者名稱'
git config user.email '使用者郵箱'

3.新增已有倉庫

git remote add origin 已有倉庫

4.把專案拉下來

  • 拉下來不是一個專案資料夾,而是專案中的許多檔案和資料夾
git pull 倉庫地址

5.修改好專案

6.新增到版本庫

git add .

7.提交註解(此次操作修改了什麼等)

git commit -m '修改的內容'

8.推到遠端倉庫

git push origin master